=begin
{{> api_info}}
=end

require 'spec_helper'
require 'json'
require 'date'

# Unit tests for {{moduleName}}::{{classname}}
{{#models}}
{{#model}}
describe {{moduleName}}::{{classname}} do
{{^oneOf}}
  let(:instance) { {{moduleName}}::{{classname}}.new }

  describe 'test an instance of {{classname}}' do
    it 'should create an instance of {{classname}}' do
      expect(instance).to be_instance_of({{moduleName}}::{{classname}})
    end
  end
{{#vars}}
  describe 'test attribute "{{{name}}}"' do
    it 'should work' do
      {{#isEnum}}
      # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
      # validator = Petstore::EnumTest::EnumAttributeValidator.new('{{{dataType}}}', [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}])
      # validator.allowable_values.each do |value|
      #   expect { instance.{{name}} = value }.not_to raise_error
      # end
      {{/isEnum}}
      {{^isEnum}}
      # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
      {{/isEnum}}
    end
  end

{{/vars}}
{{/oneOf}}
{{#oneOf}}
{{#-first}}
  describe '.openapi_one_of' do
    it 'lists the items referenced in the oneOf array' do
      expect(described_class.openapi_one_of).to_not be_empty
    end
  end

  {{#discriminator}}
  {{#propertyName}}
  describe '.openapi_discriminator_name' do
    it 'returns the value of the "discriminator" property' do
      expect(described_class.openapi_discriminator_name).to_not be_empty
    end
  end

  {{/propertyName}}
  {{#mappedModels}}
  {{#-first}}
  describe '.openapi_discriminator_mapping' do
    it 'returns the key/values of the "mapping" property' do
      expect(described_class.openapi_discriminator_mapping.values.sort).to eq(described_class.openapi_one_of.sort)
    end
  end

  {{/-first}}
  {{/mappedModels}}
  {{/discriminator}}
  describe '.build' do
    it 'returns the correct model' do
    end
  end
{{/-first}}
{{/oneOf}}
end
{{/model}}
{{/models}}
